package com.chhuang.ewcrm.api;

import com.chhuang.ewcrm.bean.QueryBean;
import com.chhuang.ewcrm.entity.*;
import com.chhuang.ewcrm.vo.ResultBean;
import com.github.pagehelper.PageInfo;
import io.reactivex.Flowable;
import okhttp3.MultipartBody;
import retrofit2.http.*;

import java.util.List;

/**
 * @author chhuang
 * @create 2020-10-23-11:55
 */
public interface AppService {
    /**
     * 登录接口
     * @param username
     * @param password
     * @return
     */
    @FormUrlEncoded
    @POST("login")
    Flowable<ResultBean<SysUser>> login(@Field("username") String username, @Field("password") String password);
//    @GET("login")
//    Flowable<ResultBean<SysUser>> login(@Query("username") String username, @Query("password") String password);

    /**
     * 获取过磅程序用户登录名
     * @return
     */
    @GET("login/getWeighMans")
    Flowable<ResultBean<List<String>>> getWeighMans();

    /**
     * 获取所有仓库
     * @return
     */
    @GET("warehouse/getAll")
    Flowable<ResultBean<List<EWarehouse>>> getWarehouses();

    /**
     * 获取物品
     * @param typeId 0采购的原料 1销售的产品 2其它
     * @param warehouseId 仓库编号
     * @return
     */
    @GET("goods/getGoods")
    Flowable<ResultBean<List<EGoods>>> getGoods(@Query("typeId") Integer typeId, @Query("warehouseId") String warehouseId);

    /**
     * 获取负责人
     * @return
     */
    @GET("sysUser/getChargerMans")
    Flowable<ResultBean<List<SysUser>>> getChargerMans();

    /**
     * 获取业务员
     * @return
     */
    @GET("sysUser/getSalesmans")
    Flowable<ResultBean<List<SysUser>>> getSalesmans();

    /**
     * 保存采购记录
     * @param eBuy
     * @return
     */
    @PUT("buy/saveBuyRecord")
    Flowable<ResultBean<EBuy>> saveRecord(@Body EBuy eBuy);


    /**
     * 保存销售记录
     * @param eSell
     * @return
     */
    @PUT("sell/saveSellRecord")
    Flowable<ResultBean<ESell>> saveRecord(@Body ESell eSell);

    /**
     * 保存转库记录
     * @param eTransfer
     * @return
     */
    @PUT("transfer/saveTransferRecord")
    Flowable<ResultBean<ETransfer>> saveRecord(@Body ETransfer eTransfer);

    /**
     * 保存其它记录
     * @param eOther
     * @return
     */
    @PUT("other/saveOtherRecord")
    Flowable<ResultBean<EOther>> saveRecord(@Body EOther eOther);

    /**
     * 上传抓取的图片
     * @param partList
     * @return
     */
    @Multipart
    @POST("eCapturePic/upload")
    Flowable<ResultBean<Void>> uploadCapturePic(@Part List<MultipartBody.Part> partList);


    /**
     * 修改用户信息
     * @param sysUser
     * @return
     */
    @PUT("sysUser/editUserInfo")
    Flowable<ResultBean<SysUser>> editUserInfo(@Body SysUser sysUser);

    /**
     * 上传用户头像
     * @return
     */
    @Multipart
    @POST("sysUser/uploadPhoto")
    Flowable<ResultBean<String>> uploadPhoto(@Part List<MultipartBody.Part> partList);


    /**
     * 修改密码
     * @param oldPassword
     * @param password
     * @param confirmPassword
     * @return
     */
    @FormUrlEncoded
    @POST("sysUser/updateUserPassword")
    Flowable<ResultBean<Void>> updateUserPassword(@Field("oldPassword")String oldPassword,
                                                 @Field("password")String password,
                                                 @Field("confirmPassword")String confirmPassword);

    /**
     * 查询采购记录
     * @param queryBean
     * @return
     */
    @POST("buy/queryPage")
    Flowable<ResultBean<PageInfo<EBuy>>> queryBuy(@Body QueryBean<EBuy> queryBean);

    /**
     * 查询销售记录
     * @param queryBean
     * @return
     */
    @POST("sell/queryPage")
    Flowable<ResultBean<PageInfo<ESell>>> querySell(@Body QueryBean<ESell> queryBean);

    /**
     * 查询转库记录
     * @param queryBean
     * @return
     */
    @POST("transfer/queryPage")
    Flowable<ResultBean<PageInfo<ETransfer>>> queryTransfer(@Body QueryBean<ETransfer> queryBean);

    /**
     * 查询其它过磅记录
     * @param queryBean
     * @return
     */
    @POST("other/queryPage")
    Flowable<ResultBean<PageInfo<EOther>>> queryOther(@Body QueryBean<EOther> queryBean);

    /**
     * 作废采购记录
     * @param id
     * @return
     */
    @DELETE("buy/toInvalid/{id}/{remark}")
    Flowable<ResultBean<Void>> toInvalidBuy(@Path("id") String id, @Path("remark") String remark);

    /**
     * 作废销售记录
     * @param id
     * @return
     */
    @DELETE("sell/toInvalid/{id}/{remark}")
    Flowable<ResultBean<Void>> toInvalidSell(@Path("id") String id, @Path("remark") String remark);

    /**
     * 作废转库记录
     * @param id
     * @return
     */
    @DELETE("transfer/toInvalid/{id}/{remark}")
    Flowable<ResultBean<Void>> toInvalidTransfer(@Path("id") String id, @Path("remark") String remark);

    /**
     * 作废其它过磅记录
     * @param id
     * @return
     */
    @DELETE("other/toInvalid/{id}/{remark}")
    Flowable<ResultBean<Void>> toInvalidOther(@Path("id") String id, @Path("remark") String remark);

    /**
     * 获取过磅员
     * @return
     */
    @POST("sysUser/getWeighers")
    Flowable<ResultBean<PageInfo<SysUser>>> getWeighers(@Body QueryBean<SysUser> queryBean);
}
